use std::{fs::File, io::Read};

use docx_rust::{document::Paragraph, DocxFile};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 打开原始文档
    let docx = DocxFile::from_file("test.docx")?;
    let mut docx = docx.parse()?;

    // 遍历所有文档节点
    for child in &mut docx.document.body.content
     {
        if let DocumentChild::Paragraph(para) = child {
            // 遍历段落中的子元素
            for content in &mut para.children {
                if let ParagraphChild::Run(run) = content {
                    // 遍历Run中的文本节点
                    run.children.iter_mut().for_each(|node| {
                        if let RunChild::Text(text) = node {
                            if text.text.contains("{{测试}}") {
                                // 执行替换操作
                                text.text = text.text.replace("{{测试}}", "123");
                            }
                        }
                    });
                }
            }
        }
    }

    // 保存修改后的文档
    docx.write_file("tmp/output.docx")?;
    
    Ok(())
}